package main

import (
	"errors"
	"fmt"
)

func test() {
	// 使用defer + recover 来捕获和处理异常
	defer func() {
		if err := recover(); err != nil {
			// 防止崩溃，可加入邮件功能
			fmt.Println("err=", err)
		}
	}()
	num1 := 10
	num2 := 0
	res := num1 / num2
	fmt.Println("res=", res)
}

func readConfig(fileName string) (err error) {
	if fileName == "config" {
		return nil
	}
	return errors.New("配置文件读取错误！")
}

func test2() {
	err := readConfig("confi")
	if err != nil {
		panic(err)
	}
	fmt.Println("test2 后面的函数")
}

func main() {
	// defer panic recover
	// test()
	// fmt.Println("test end!")
	// 自定义错误 errors.New() panic内置函数 接受一个空接口类型，接受任何类型；
	// 可接受error类型变量，输出错误信息，并且退出程序

	test2()

}
